home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / news / inn-1.4-l / inn-1 / inn-1.4-linux-0.1 / site / send-uucp < prev   
Text File  |  1993-08-21  |  2KB  |  117 lines

  1. #! /bin/sh
  2. ##  $Revision: 1.11 $
  3. ##  SH script to send UUCP batches out.
  4.  
  5. ##  =()<. @<_PATH_SHELLVARS>@>()=
  6. . /usr/lib/news/innshellvars
  7.  
  8. PROGNAME=`basename $0`
  9. LOCK=${LOCKS}/LOCK.${PROGNAME}
  10. LOG=${MOST_LOGS}/${PROGNAME}.log
  11.  
  12. MAXJOBS=200
  13. UUXFLAGS="- -r -z -gd"
  14.  
  15. ##  Start logging.
  16. test ! -f ${LOG} && touch ${LOG}
  17. chmod 0660 ${LOG}
  18. exec >>${LOG} 2>&1
  19. echo "${PROGNAME}: [$$] begin `date`"
  20. cd ${BATCH}
  21.  
  22. ##  Anyone else there?
  23. trap 'rm -f ${LOCK} ; exit 1' 1 2 3 15
  24. shlock -p $$ -f ${LOCK} || {
  25.     echo "${PROGNAME}: [$$] locked by [`cat ${LOCK}`]"
  26.     exit 0
  27. }
  28.  
  29. ##  Who are we sending to?
  30. if [ -n "$1" ] ; then
  31.     LIST="$*"
  32. else
  33.     LIST=""
  34.     case `date +%H` in
  35.     01|04|07|21|23)
  36.     LIST="kurz-ai aoa clsib21 leafusa metasoft"
  37.     ;;
  38.     06|12|15|17|20)
  39.     LIST="esca"
  40.     ;;
  41.     esac
  42. fi
  43.  
  44. case ${HAVE_UUSTAT} in
  45. DONT)
  46.     TEMP=${TMPDIR}/uuq$$
  47.     uuq -h |tr -d : >${TEMP}
  48.     ;;
  49. esac
  50.  
  51. ##  Do the work...
  52. for SITE in ${LIST}; do
  53.  
  54.     ##  See if any data is ready for host.
  55.     BATCHFILE=${SITE}.uucp
  56.     if [ -f ${SITE}.work ] ; then
  57.     cat ${SITE}.work >>${BATCHFILE}
  58.     rm -f ${SITE}.work
  59.     fi
  60.     mv ${SITE} ${SITE}.work
  61.     ctlinnd -s -t30 flush ${SITE} || continue
  62.     cat ${SITE}.work >>${BATCHFILE}
  63.     rm -f ${SITE}.work
  64.     if [ ! -s ${BATCHFILE} ] ; then
  65.     echo "${PROGNAME}: [$$] no articles for ${SITE}"
  66.     rm -f ${BATCHFILE}
  67.     continue
  68.     fi
  69.  
  70.     ##  Get number of jobs for the current site.
  71.     case ${HAVE_UUSTAT} in
  72.     DONT)
  73.     JOBS=`${AWK} \
  74.         'BEGIN{X=0}  {if ($1 == "'$SITE'") X=$2}  END{print X}' <${TEMP}`
  75.     ;;
  76.     DO)
  77.     JOBS=`uustat -s${SITE} | grep rnews | wc -l`
  78.     ;;
  79.     *)
  80.     JOBS=0
  81.     ;;
  82.     esac
  83.     if [ ${JOBS} -ge ${MAXJOBS} ] ; then
  84.     echo "${PROGNAME}: [$$] ${JOBS} files already queued for ${SITE}"
  85.     continue
  86.     fi
  87.     QUEUEJOBS=`expr ${MAXJOBS} - ${JOBS}`
  88.  
  89.     ##  Get the compression flags.
  90.     echo "${PROGNAME}: [$$] begin ${SITE}"
  91.     case "${SITE}" in
  92.     esca)
  93.     COMPRESS="compress -b12"
  94.     ;;
  95.     *)
  96.     COMPRESS="compress"
  97.     ;;
  98.     esac
  99.  
  100.     time batcher -N ${QUEUEJOBS} \
  101.     -p"(echo '#! cunbatch' ; exec ${COMPRESS} ) | uux ${UUXFLAGS} %s!rnews" \
  102.     ${SITE} ${BATCHFILE}
  103.  
  104.     echo "${PROGNAME}: [$$] end ${SITE}"
  105. done
  106.  
  107. case ${HAVE_UUSTAT} in
  108. DONT)
  109.     rm -f ${TEMP}
  110.     ;;
  111. esac
  112.  
  113. ##  Remove the lock file.
  114. rm -f ${LOCK}
  115.  
  116. echo "${PROGNAME}: [$$] end `date`"
  117.